package com.ruoyi.project.system.device.pdf;

import com.ruoyi.project.system.device.domain.MyDevice;
import lombok.extern.slf4j.Slf4j;

import java.io.Closeable;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

@Slf4j
public class CommonUtils {

    /**
     * invokeMethod : (通过反射，根据方法名，执行方法,最终返回方法执行后的结果). <br/>
     * @param <T> 方法执行的入参
     * @param object 对象
     * @param methodName 方法名
     * @param args 方法执行参数
     * @return 方法执行后的结果
     * @since JDK 1.8
     */
    public static <T> Object invokeMethod(T object, String methodName, Object... args)
    {
        try
        {
            Method method = object.getClass().getMethod(methodName);
            return method.invoke(object, args);
        }
        catch (Exception e)
        {
            log.error("getfieldValue error", e);
            return null;
        }
    }

    public static Object[] getAllObjectValue(Object object){
        // 获取实体类所有字段的值

            try {
                Field[] fields = object.getClass().getDeclaredFields();//.getDeclaredFields();
                Object[] values = new Object[fields.length];

                for (int i = 0; i < fields.length; i++) {
                    Field field = fields[i];
                    field.setAccessible(true); // 设置私有字段可访问
                    values[i] = field.get(object); // 获取当前对象中字段的值
                }

                return values;
            } catch (IllegalAccessException e) {
                e.printStackTrace();
                return null;
            }

    }


}
